<?php

declare(strict_types=1);

namespace app\common\traits;

/**
 * 流程Model层公共方法 含流程相关的，非所有公用
 * @author kaige
 * @update 2022-08-02
 * @copyright ©2022 泉州市盛筑信息科技有限公司 版权所有
 */
trait FlowModelTrait
{
  /**
   * 关联流程单据表 一对一关系 (主表 拥有 hasOne 一个它 附表 ，附表 属于 belongsTo 它 主表)
   * 所有关联流程的功能表，均视为 PmmFlowBill的附属表。
   * PmmFlowBill为主表,除了ID、delete_time 都绑定到附表了，因这里是从附表入口的，故用 belongsTo 反向关联
   */
  public function flowbill()
  {
    //belongsTo('关联模型','当前模型的外键', '关联模型的主键'); // 主表ID=副表ID
    return $this->belongsTo('app\common\model\pmm\PmmFlowBill', 'id', 'id')->bind([
      'company_id',
      'put_uid',
      'put_name',
      'put_time',
      'put_dept_id',
      'put_dept_id_name',
      'put_ranking_id',
      'put_ranking_id_name',
      'handle_uid',
      'handle_name',
      'handle_time',
      'modu_id',
      'table',
      'flow_number',
      'modu_name',
      'status_val',
      'status_txt',
      'status',
      'is_put',
      'now_step_bn',
      'now_step_id',
      'all_audit_id',
      'all_audit_name',
      'now_audit_id',
      'now_audit_name',
      'audit_explain',
      'update_time'
    ]);
  }

  //关联查询
  //$query = HrmDesired::hasWhere('flowbill', $zhuwhere)->where($fuwhere)->order($order)->field($field)->with('flowbill')->select();
  //闭包查询
  // $list = HrmDesired::hasWhere('flowbill', function ($query) use ($where) {
  //   $query->where($where)
  // })->select();

  public function glchaosong()
  {
    ///belongsTo('关联模型','当前模型的外键', '关联模型的主键'); // 主表ID=副表ID
    //因 id 归于流程主副相同，故可使用此关联
    return $this->belongsTo('app\common\model\pmm\PmmFlowChaosong', 'id', 'cs_m_id')->bind([
      'cs_cs_uid' => 'cs_uid',
      'cs_rece_id' => 'rece_id',
      'cs_rece_id_name' => 'rece_id_name'
    ]);
  }
}
